package com.eyaomall.wxmall.common.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 特殊字符拦截器工具类
 * 
 * @author yuhuafeng
 *
 */
public class StringFilterUtil {

	/**
	 * 字符过滤方法，主要原理是利用正则表达式
	 * 
	 * @param str
	 *            需要过滤的字符
	 * @param regEx
	 *            特殊字符的字符串 ,支持正则表达式 String regEx = "[^a-zA-Z0-9]"
	 * @return
	 */
	public static String StringFilter(String str, String regEx) {
		// 只允许字母和数字
		// String regEx = "[^a-zA-Z0-9]";
		// 清除掉所有特殊字符
		StringBuffer buf = new StringBuffer();
		buf.append("[");
		buf.append(regEx);
		buf.append("]");
		try {
			if(str==null){
				return null;
			}
			Pattern p = Pattern.compile(buf.toString());
			Matcher m = p.matcher(str);
			return m.replaceAll("").trim();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}

	}
	
	/**
	 * 手机号验证过滤器
	 * @param value
	 * @return
	 */
	public static boolean PhoneFilter(String value){
		String regExp = "^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$";  
		  
		Pattern p = Pattern.compile(regExp);  
		  
		Matcher m = p.matcher(value);  
		  
		return m.find();//boolean  
	}
	
	/**
	 * 简单过滤器，过滤以下特殊字符 `~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？\
	 * @param str 需要过滤的字符串
	 * @return
	 */
	public static String SimpleStringFilter(String str) {
		String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？/\\\\]";
		return StringFilter(str, regEx);
	}
}
